﻿#pragma once

#include <vector>
#include <string>
#include "AstNode.h"
#include "Parameter.h"

class Data;
class ClassInstanceType;
class FunctionInstance;
/// 呼叫函数
class AstCall : public AstNode {
public:
	virtual void draw(std::ostream& os);
	virtual CodeGen* makeGen(SiContext* parent);
public:
	llvm::Value* object = nullptr;
	std::vector< Parameter > arguments;	// 命名参数表
	std::vector< AstType* > templateArgs;
private:
	FunctionInstance* _func = nullptr;
};
